Add BUILD_BUG_ON() and a handful of users.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 27 Apr 2006 14:55:09 +0000 (15:55 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 27 Apr 2006 14:55:09 +0000 (15:55 +0100)
Signed-off-by: Jan Beulich <jbeulich@novell.com>
xen/arch/x86/setup.c
xen/include/xen/lib.h

index 494c13b6d198978871134ba728b1aca10486563e..944bdb2e00001bad4aa7542a2f69ea1d7ff80756 100644 (file)
@@ -391,17 +391,17 @@ void __init __start_xen(multiboot_info_t *mbi)
     total_pages = nr_pages;
 
     /* Sanity check for unwanted bloat of dom0_op structure. */
-    BUG_ON(sizeof(((struct dom0_op *)0)->u) !=
-           sizeof(((struct dom0_op *)0)->u.pad));
+    BUILD_BUG_ON(sizeof(((struct dom0_op *)0)->u) !=
+                 sizeof(((struct dom0_op *)0)->u.pad));
 
-    BUG_ON(sizeof(start_info_t) > PAGE_SIZE);
-    BUG_ON(sizeof(shared_info_t) > PAGE_SIZE);
-    BUG_ON(sizeof(vcpu_info_t) != 64);
+    BUILD_BUG_ON(sizeof(start_info_t) > PAGE_SIZE);
+    BUILD_BUG_ON(sizeof(shared_info_t) > PAGE_SIZE);
+    BUILD_BUG_ON(sizeof(vcpu_info_t) != 64);
 
     /* __foo are defined in public headers. Check they match internal defs. */
-    BUG_ON(__HYPERVISOR_VIRT_START != HYPERVISOR_VIRT_START);
+    BUILD_BUG_ON(__HYPERVISOR_VIRT_START != HYPERVISOR_VIRT_START);
 #ifdef HYPERVISOR_VIRT_END
-    BUG_ON(__HYPERVISOR_VIRT_END   != HYPERVISOR_VIRT_END);
+    BUILD_BUG_ON(__HYPERVISOR_VIRT_END   != HYPERVISOR_VIRT_END);
 #endif
 
     init_frametable();
index 8b9253b020588be374e9f2c2bd1d1478aca9e890..124d49ade5804ce8874ae2255b7f0b4916c6d541 100644 (file)
@@ -16,6 +16,9 @@
 
 #define BUG_ON(_p) do { if (_p) BUG(); } while ( 0 )
 
+/* Force a compilation error if condition is true */
+#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2 * !!(condition)]))
+
 #ifndef NDEBUG
 #define ASSERT(_p) { if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s\n", #_p , __LINE__, __FILE__); BUG(); } }
 #else